Method and system for backup and recovery

ABSTRACT

For data backup and recovery based on linked file repositories with each of the linked file repositories representing an individual file system capable of storing at least one version of a file and being connected to at least one server system, each of the linked file repositories are placed in a certain position for storing a certain version of the file. Each position of each of the linked file repositories is continuously numbered. A number of the versions of the file are determined by the position of the one of the linked file repositories. A version-movement process over each of the linked file repositories is implemented to perform a read operation of the at least one version of the file.

PRIORITY CLAIM

This application claims priority to European Patent Application No.EPO12150010.2, filed Jan. 2, 2012, which is hereby incorporated byreference in its entirety.

FIELD OF THE INVENTION

The present invention relates in general to the field of data backup andrecovery, and in particular to a method and a system for backup andrecovery. Still more particularly, the present invention relates to adata processing program and a computer program product for backup andrecovery.

DESCRIPTION OF THE RELATED ART

In today's society, computer systems are commonplace. Computer systemsmay be found in the workplace, at home, or at school. Computer systemsmay include data storage systems, or disk storage systems, to processand store data. A storage system may include various storage components,such as one or more disk drives configured in a storage environment. Forexample, the storage environment may include a number of disk drivesimplemented in an array, such as a Redundant Array of Independent Disks(RAID) topology, to provide data security in the event of a hardware orsoftware failure. The storage environment may also include other storagecomponents, such as controllers and interfaces to mange the flow ofdata. Moreover, the computer system may include a complex dataprocessing system or computing environment. A data processing systemoften requires computational resources or availability requirements thatcannot be achieved by a single computer.

SUMMARY OF THE DESCRIBED EMBODIMENTS

The technical problem underlying the present invention is to provide amethod and a system for backup and recovery, which are able to scale andsimplify backup and recovery while avoiding shortcomings and pain pointsof prior art backup and recovery. For data backup and recovery based onlinked file repositories with each of the linked file repositoriesrepresenting an individual file system capable of storing at least oneversion of a file and being connected to at least one server system,each of the linked file repositories are placed in a certain positionfor storing a certain version of the file. Each position of each of thelinked file repositories is continuously numbered. A number of theversions of the file are determined by the position of the one of thelinked file repositories. A version-movement process over each of thelinked file repositories is implemented to perform a read operation ofthe at least one version of the file.

According to the present invention this problem is solved by providing amethod for backup and recovery having the features of claim 1, a systemfor backup and recovery having the features of claim 12, a dataprocessing program for backup and recovery having the features of claim14, and a computer program product for backup and recovery having thefeatures of claim 15. Advantageous embodiments of the present inventionare mentioned in the subclaims.

Accordingly, in an embodiment of the present invention a method forbackup and recovery is based on linked file repositories, eachrepresenting an own file system capable of storing one version of a fileand being connected to a least one server system; wherein each filerepository is placed in a certain position storing a certain version ofthe file; wherein positions of the file repositories are continuouslynumbered; wherein a number of the certain version of the file isdetermined by the position of the corresponding file repository; whereina version-movement process over all file repositories is implemented toperform a file write operation; and wherein a version-recovery processover all file repositories is implemented to perform a file-readoperation of a certain file version.

In further embodiments of the present invention, positions of the filerepositories are continuously numbered beginning at “1”; wherein a firstfile repository is numbered “1” storing a first version of the filerepresenting a most recent version of the file.

In further embodiments of the present invention, the version-movementprocess is implemented with following steps: Receiving a file writeoperation with a new version of a file to be written from at least oneserver system or a preceding file repository; determining if a versionof the file to be written already exists in a corresponding filerepository; if a version of the file to be written already exists in thefile repository, verify versioning policies; move the existing fileversion from the repository to a subsequent file repository, if theversioning policies indicate a higher number of versions to be savedthan a position number of the file repository; otherwise delete theexisting file version in the file repository; store the new version ofthe file to be written from at least one server system or a precedingfile repository in the file repository; if no version of the file to bewritten exists in the file repository, store the new version of the fileto be written in the file repository.

In further embodiments of the present invention, the version-recoveryprocess is implemented with following steps: Receiving a file-readoperation including a version number of a file to be read from the atleast one server system; examining the version number of said file to beread; determining if the requested version of the file to be read existsin a file repository whose position number matches the received versionnumber; if the requested version of the file to be read exists, read andsend the file to a requesting server system; otherwise indicate a fileread-error to the requesting server system if the requested version ofthe file does not exist.

In further embodiments of the present invention, the version-movementprocess is implemented on a block-differential basis with the followingsteps: Receiving a file write operation with a new version of a file tobe written from the at least one server system or a preceding filerepository; determining if a version of the file to be written alreadyexists in a corresponding file repository; if a version of the file tobe written already exists in the file repository verify versioningpolicies; compare data content of the new version of the file to bewritten and an existing version of the file to be written; and determinedifferent data blocks; move the different data blocks from the existingversion of the file to be written from the file repository to asubsequent file repository, if the versioning policies indicate moreversions than a position number of the file repository; otherwise deletethe different data blocks of the existing file version in the filerepository; store the different data blocks of the new version of thefile to be written from the at least one server system or a precedingfile repository in the file repository; if no version of the file to bewritten exists in the file repository, store the new version of the fileto be written in the file repository.

In further embodiments of the present invention, the version-recoveryprocess is implemented on a block-differential basis with the followingsteps: Receiving a file-read operation including a version number of afile to be read from the at least one server system; examining theversion number of the file to be read; determining if the requestedversion of the file to be read exists in a file repository whoseposition number matches with the requested version number; if therequested version of the file to be read exists, recreate the requestedversion of the file to be read by determining if the requested versionof the file to be read is the most recent version of the file to beread; if the requested version of the file to be read is the most recentversion of the file to be read, read and send the most recent version ofthe file from the first file repository to the requesting server system;otherwise read content of each file repository whose position number isless or equal to the requested version number of the file to be read;replace the different data blocks of a more recent version of the fileto be read with the different data blocks of an older version of thefile to be read; and send the recreated version of the file to be readto the requesting server system; if the requested version of the filedoes not exist, indicate a file read-error to the requesting serversystem.

In further embodiments of the present invention, the requested versionnumber is part of the read-command including file name and the versionnumber, or is set as file attribute prior to sending the read-command.

In further embodiments of the present invention, the requested versionnumber is an integer number, or a date range, or a time range.

In further embodiments of the present invention, each file repositoryincludes at least one of the following functions: A deduplicationfunction allowing to deduplicate files based on their version number,indexing functions allowing to index the files and providing search anddiscovery capabilities, and an expiration function for moved filesdetermining when a moved file expires and is being deleted time-based orevent-based.

In further embodiments of the present invention, at least one functionis performed for all files stored in the file repository.

In further embodiments of the present invention, at least one functionis performed for all files stored in the file repository matching atleast one of the following rules: File extension matches a certainpattern; file name matches a certain pattern; file path name matches acertain pattern; file owner matches a certain pattern; and filecreation, modification or last access time matches a certain date/timerange.

In another embodiment of the present invention, a system for backup andrecovery in communication with at least one server system comprises anumber of file repositories physically connected to each other; whereineach file repository represents an own file system capable of storingone version of a file and comprises at least one file system interfaceand at least one file storage; wherein each file repository is placed ina certain position storing a certain version of the file; whereinpositions of the file repositories are continuously numbered; wherein anumber of the certain version of the file is determined by the positionof the corresponding file repository; and a control module logicallyconnected to each file repository and the interfaces, wherein thecontrol module implements a version-movement process over all filerepositories to perform a file write operation; and implements aversion-recovery process over all file repositories to perform afile-read operation.

In further embodiments of the present invention, the file repository isimplemented as local file system, or as linear tape file system, or asremote file system. So, the file repository could be implemented as anykind of state of the art local file systems including but not limited tozFS, sect3 and ext4, Balanced Tree file system (BTRFS), General ParallelFile System (GPFS), New Technology File System (NFTS), Apple File System(AFS) or as linear tape file system (LTFS). Furthermore, the filerepository could be provided as remote file system such as networkattached storage (NAS) system implementing Network File System protocol(NFS) and Common Internet File System protocol (CIFS).

In another embodiment of the present invention, a data processingprogram for execution in a data processing system comprises softwarecode portions for performing a method for backup and recovery when theprogram is run on the data processing system.

In yet another embodiment of the present invention, a computer programproduct stored on a computer-usable medium, comprises computer-readableprogram means for causing a computer to perform a method for backup andrecovery when the program is run on the computer.

All in all, this invention teaches a backup storage file system whichenables scalable and simplified backup and recovery solutions by usingmultiple file systems which are logically connected. Each filesystem—also called file repository—stores one version of a file. Thisfosters scalability because not all versions are stored in the same filesystem. The backup storage file system provides a file system interface.This fosters simplification for the backup and recovery process becausethis does not require a backup client and server. In opposite to priorart operating system commands are used. In addition the data can beviewed and accessed easily via a file system interface because thedata-format (file) is preserved.

The backup storage file system supports enhanced functions such asversioning, deduplication, replication and indexing which are all awareof the version of the file. For example this allows to index the first(latest) version of a file, which is typically needed for queries andrecoveries; and to deduplicate the second version of a file which istypically not required for queries and recoveries.

The backup storage file system can store data on any storage technologywhich supports file systems including but not limited to hard disk,solid state disk (SSD), optical disk such as DVD or Blu-Ray, and tape,the latter leveraging the linear tape file system.

Embodiments of the present invention implement a backup storage filesystem physically connected via a network to one or more server systems,which require the backup of files. In an alternated embodiment thebackup storage file system is comprised in a server system.

The backup storage file system includes one or more file repositorieseach comprising at least one file system interface and at least one filestorage. Said file repositories are physically connected, for examplevia a network, to each other; each representing an own file systemcapable of storing one version of a file. Each file repository is placedin a certain position which is continuously numbered beginning at “1”.The file repository with number “1”, i.e. the first file repository,exposes its file storage capacity via its file system interface to theservers connected to the backup storage file system. In the first filerepository the first version of the data is stored which in thissemantic is the youngest version.

The backup storage file system includes a control module, which islogically connected to each file repository and the interfaces. Thecontrol module implements a version-movement process over all filerepositories. This version-movement process assures that each filerepository stores a version of each file. The number of the version isdetermined by the position of the file repository. For example the firstfile repository stores the first (latest version); the second filerepository stores the second (pre-latest version) and so on.

In one embodiment the movement process will only move the parts of thefile data that have changed between the existing file (to be moved) andthe new file that is being written.

The same version-movement method is implemented for the subsequent filerepositories with the difference that the subsequent file repositoriesdo not receive direct file write operations from the servers but fromthe control module. For example if the existing file in the first filerepository is moved to the second file repository the control modulechecks if a file with the same path and file name already exists in thesecond repository. If this is the case then it checks the versioningpolicies and if the versioning policies indicate more than two versionsthen the existing version of the file is moved to the third repositorybefore said new file is placed in the second repository. Otherwise ifthe versioning policies indicate two versions or less then the new filereplaces the existing file in the second file repository.

Any file repository can include a deduplication function allowingdeduplicating files based on their version number. Any file repositorycan include indexing functions allowing to index the files and providesearch and discovery capabilities. Each file repository beyond the firstone can include an expiration policy that is assigned to each file beingstored in the file repository. The expiration policy determines when afile expires and is being deleted. The expiration policy can betime-based (e.g. 30 days) or event-based (e.g. 30 days after the filehas been deleted). Any file repository can be a file system on disk, SSDor on tape, the latter leveraging the linear tape file system.

The control module included in the backup storage file system implementsa version-recovery process over all file repositories. The versionnumber of the file to be recovered can be given by different means. Itcan be given as part of the read-command, which requires changing theread-command. It can also be given in a file attribute, which can easilybe set prior to sending the read command. It can also be given by othermeans of communication. The Version number, which is included in thefile-read operation, can be an integer number. It can also be a date andtime range.

The above, as well as additional purposes, features, and advantages ofthe present invention will become apparent in the following detailedwritten description.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the advantages of the invention will be readilyunderstood, a more particular description of the invention brieflydescribed above will be rendered by reference to specific embodimentsthat are illustrated in the appended drawings. Understanding that thesedrawings depict embodiments of the invention and are not therefore to beconsidered to be limiting of its scope, the invention will be describedand explained with additional specificity and detail through the use ofthe accompanying drawings, in which:

FIG. 1 is a schematic block diagram of a Prior Art backup and recoverysystem architecture;

FIG. 2 is a schematic block diagram of a backup and recovery systemarchitecture, in accordance with an embodiment of the present invention;

FIG. 3 is a schematic flow diagram of a version-movement process beingpart of a backup and recovery method, in accordance with a firstembodiment of the present invention;

FIG. 4 is a schematic flow diagram of a version-recovery process beingpart of the backup and recovery method, in accordance with the firstembodiment of the present invention;

FIG. 5 is a schematic flow diagram of a version-movement process beingpart of a backup and recovery method, in accordance with a secondembodiment of the present invention; and

FIGS. 6 and 7 is a schematic flow diagram of a version-recovery processbeing part of the backup and recovery method, in accordance with thesecond embodiment of the present invention.

The detailed description explains the preferred embodiments of theinvention, together with advantages and features, by way of example withreference to the drawings. In the drawings, like elements are referredto with equal reference numerals. The drawings are merely schematicrepresentations, not intended to portray specific parameters of theinvention. Moreover, the drawings are intended to depict only typicalembodiments of the invention and therefore should not be considered aslimiting the scope of the invention.

DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS

Referring to FIG. 1, a typical backup and recovery system 100 includes abackup client 104 running on a server 102, which includes one or moreprimary file systems 106, primary in a sense that the original copy ofthe data is stored here. The backup client 104 identifies and copies thefiles from the primary file systems 106 to the backup server system 110via a backup network 108. The backup server includes backup serversoftware 112, which extracts the metadata such as retention times,policies and storage location for the files and stores the files in anattached backup storage system 120 via a storage network 118. Themetadata is stored in a separate metadata database 114 maintained by inthe backup server software.

For recovery the backup client 104 sends a recovery-request for acertain file or sets of files to the server system 110. The serversystem software 112 checks the metadata database 114 to find the storagelocation of the file and retrieves said files from the backup storage120 and sends it to the clients system which places it on the primarystorage. The recovery-request sent by the client system may include theversion of the file to be recovered.

While backup and recovery systems offer a variety of value addingfunctions such as versioning, indexing, high availability, replicationand deduplication their implementation and operation is rather complex.The complexity comes from the client-server architecture. It may includemultiple specialized server systems 110 such as media servers and dataservers. In addition the format of the data, which is being backed up,is not preserved in the backup server system 110 and storage 120. Thismeans the backup server software 112 stores the data in a proprietaryformat and maintains metadata describing the data. The metadata isstored in the metadata database 114. Thus without the backup serversoftware 112, and in particular the metadata database 114, no recoveryis possible. Prior art backup and recovery systems are flexible inregards to the storage technology, which in fact makes theadministration and maintenance more complex. Prior art backup andrecovery systems integrate with different kinds of applications andsystems on the client site (102) such as file systems, databases, ERPsystems, and mail servers. This provides flexibility, but at the sametime makes it more complex for an administrator to configure backup andrecovery procedures.

According to international IT consultants in 2011, the majority of thedata today is stored in filesystemshttp://searchunifiedcommunications.bitpipe.com/detail/RES/1273020851_(—)887.html-_blank.In addition any operating system includes commands to copy files fromone file system to another file system, which enables simplified backupand recovery solutions. However, the ever growing amount of data filescombined with multiple versions thereof drives single file systems toits limits. The limits are set for example by the number of inodes whicha single file system can manage. The limits are also set by housekeepingoperations such as defragmentation, which may not be possible when acertain maximum amount of files is exceeded in a file system. Forexample, one GPFS (General Parallel File System) file system within anIBM SoNAS system can store 1 billion files.

In the Patent Application Publication US 2010/0191774 A1 “METHOD ANDSYSTEM FOR VERSIONED FILE SYSTEM USING STRUCTURED DATA REPRESENTATIONS”by Mason, J R. et al., a versioned file system is disclosed. In adisclosed embodiment, at a first time, an interface creates and exportsto a data store a first structured data representation corresponding toa first version of the local file system. The first structured datarepresentation is an XML (eXtensible Markup Language) tree having a rootelement, one or more file elements associated with the root element andone or more file elements associated with a given directory element.Upon a change within the file system, e.g., file creation, file deletionand directory modification, the interface creates and exports a secondstructured data representation corresponding to a second version of thefile system. The second structured data representation differs from thefirst structured data representation up to and including the rootelement of the second structured data representation. So the disclosedversioned file system is based on different structured representationsassociated with different versions of a file. Each different structuredrepresentation is exported as different file system to the user, so eachversion of a file is a different file system within the versioned filesystem. However, this patent application does not disclose the conceptof physically storing different versions of a file in different filesystems and automatically migrating old versions to a next file systemwhen a newer version is backed up.

In the Patent Application Publication US 2009/0077140 A1 “DATA RECOVERYIN A HIERARCHICAL DATA STORAGE SYSTEM” by Anglin et al. systems andmethods for retrieving data are disclosed. The disclosed systems andmethods comprise a plurality of storage pools. The disclosed methodcomprises processing configurable data retrieval instructions todetermine a first storage pool from which target backup data is to beretrieved, in response to a data restore request; and retrieving thetarget backup data from the first storage pool to satisfy the restorerequest. So, systems and methods for physically storing differentversions of a file in different data pools and likewise methods forretrieving different versions from the respective data pool aredisclosed. However, storing different versions of files in physicallylinked file systems is not disclosed. File systems are the origin offiles and backing up files into a file system makes recovery procedureseasier, whereas pools as abstract entities require additional efforts toextract files for recovery.

FIG. 2 shows a novel backup and recovery architecture 200 which is basedon the novel backup storage file system 202, according to an embodimentof the present invention. The backup storage file system 202 isphysically connected via a backup network 108 to one or more serversystems 102. It thereby presents a file system interface 204 to theserver systems 102 which can be a remote file system—also known asNetwork Attach Storage (NAS) such as NFS (Network File System) or CIFS(Common Internet File System).

The backup storage file system 202 includes one or more filerepositories 210, 212, 214, each comprising at least one file systeminterface and at least one file storage. The file repositories 210, 212,214 are physical connected via a network 208 to each other. In analternate embodiment these file repositories are locally mounted in aserver system which is representing the backup storage file system 202.Each file repository 210, 212, 214 is configured to store one version ofeach file, for example as file repository 210 stores the first (latest)version, file repository 212 stores the second (pre-latest) version andfile repository 214 stores the third last version. People skilled in theart may recognize that the number of file versions scales with thenumber of file system repositories 210, 212, 214 to a virtual unlimitednumber of versions.

The backup storage file system 202 also includes a controller 206 whichprovides version-movement and version-recovery functions. Theversion-movement function assures that each version of a file is storedon a separate file repository 210, 212, 214. The version-recoveryfunction allows recovering any existing version of a file. In analternate embodiment the novel backup storage file system is included inserver systems 102. Each file repository 210, 212, 214 can be configuredto perform value adding functions according to techniques such asversioning, deduplication, replication, indexing and search, expirationpolicies and the like. These functions can be configured for all filesstored in a file repository 210, 212, 214 or they can be configured forfiles matching certain rules, such as: File extension matches a certainpattern; file name matches a certain pattern; file path name matches acertain pattern; file owner matches a certain pattern; file creation,modification or last access time matches a certain date/time range. Theinvention is not limited to these rules.

The server systems 102 include operating systems 201 which providecopy-commands. The backup storage file system 202 presents a file systeminterface 204 to the server systems 102. The copy commands of theoperating system 201 of the server system 102 can be used to backup orrecover files from the primary file system 106 of the servers and thebackup storage file system 202. The controller 206 intercepts the copycommands in any direction and provides version-movement (on write) andversion-recovery (on read) functions.

FIG. 3 shows a version-movement process being part of a backup andrecovery method, in accordance with a first embodiment of the presentinvention. The first embodiment of the version-movement process is beingdescribed with reference to FIGS. 2 and 3. In step S302, a file writeoperation with a new version of a file to be written is received fromthe at least one server system 102 or a preceding file repository 210,212. In step S304, it is determined if a version of the file to bewritten already exists in a corresponding file repository 210, 212, 214.If a version of the file to be written already exists in the filerepository 210, 212, 214 versioning policies are verified in step S306.Versioning policies are configured by the administrator of the backupstorage file system 202 and are policies. In step S308, it is determinedif the versioning policies indicate a higher number of versions to besaved than a position number of the corresponding file repository 210,212, 214. If the versioning policies indicate a higher number ofversions to be saved than a position number of the file repository 210,212, 214, the existing file version from the repository 210, 212 ismoved to a subsequent file repository 212, 214 in step S310; otherwisethe existing file version in the file repository 210, 212, 214 isdeleted in step S320. In step S330 the new version of the file to bewritten from at least one server system 102 or a preceding filerepository 210, 212 is written to the file repository 210, 212, 214. Ifno version of the file to be written exists in the corresponding filerepository 210, 212, 214, the new version of the file to be written iswritten to the corresponding file repository 210, 212, 214 in step S330.For example, if the number of versions to be saved is two and twoversions of the file to be written already exist in the filerepositories 210, 212, the existing version of the file to be written inthe second file repository 212 is deleted and the existing version ofthe file to be written in the first file repository 210 is moved to thesecond file repository 212, and the new version of the file to bewritten from the file system 102 is written in the first file repository210.

The process including steps S302 to S340 is performed for every filerepository 210, 212, 214 of the backup storage file system 202. In otherwords, for the first repository 210 the controller 206 receives a filewrite operation via interface 204 from a server system 102, in stepS302. In the next step S304, the controller 206 determines if a versionof the file to be written already exists in the first file repository210. If the file does not exist in the first file repository 210, theprocess flows to step S330 where the file is being written to the firstfile repository 210. If the file does exist in the first file repository210, versioning rules for the file are verified in step S306. Thereforecontroller 206 queries the first file repository 210. If only oneversion of the file is to be kept, the process flows to step S320 wherethe old file is being deleted in the first file repository 210.Afterwards the process flows to step S330 where the file is beingwritten to the first file repository 210.

If the query of the first file repository 210 indicates that more thanone version is to be kept, the controller 206 moves the existing versionof the first file repository 210 in step S310 to the second filerepository 212. Now the version-movement process is performed for thesecond file repository 212. The second file repository 212 receives anew version of the file to be written from the first file repository 210in step S302. In the next step S304, the controller 206 determines if aversion of the file to be written already exists in the second filerepository 212. If the file does not exist in the second file repository212, the process flows to step S330 where the file is being written tothe second file repository 212. If the file does exist in the secondfile repository 212 versioning rules for the file are verified in stepS306. Therefore controller 206 queries the second file repository 212.If only two versions of the file are to be kept, the process flows tostep S320 where the old file is being deleted in the second filerepository 212. Afterwards the process flows to step S330 where the fileis written to the second file repository 212. If more than two versionsof the file are to be kept, the process flows to step S310 where the oldfile is being moved to the third file repository 214 in step S310.Afterwards the process flows to step S330 where the new file is writtento the second file repository 212. Then the process according to stepS302 to S340 is repeated for the third file repository 214 of the backupstorage file system 202.

The third file repository 214 receives a new version of the file to bewritten from the second file repository 212 in step S302. In the nextstep S304, the controller 206 determines if a version of the file to bewritten already exists in the third file repository 214. If the filedoes not exist in the third file repository 214, the process flows tostep S330 where the file is being written to the third file repository214. If the file does exist in the third file repository 214 versioningrules for the file are verified in step S306. Therefore controller 206queries the third file repository 212. Since only three filerepositories 210, 212, 214 are present in the shown embodiment, onlythree versions of the file can be kept in the system 202, and theprocess flows to step S320, where the old file is being deleted in thethird file repository 214. Afterwards the process flows to step S330where the file is written to the third file repository 212.

Once the file movement operations are done and the file has been writtento the first file repository 210, the controller 206 or the filerepositories 210, 212, 214 check and initiate additional functionalitylike deduplication or indexing in the file repositories 210, 212 and 214in step S340, which ends the active file write process.

The version-movement process essentially assures that if a new versionof a file is written to the backup storage file system 202, the previousversions are moved to the subsequent file repositories 212 and 214. Thisassures that the different versions are stored in separated file systemsallowing scalability and the execution of value-adding functions.

In a further embodiment, a differential version-movement process mightbe incorporated to lower the amount of data that needs to be transferredwhile effectively saving storage space, this is explained with referenceto FIG. 5.

FIG. 4 shows a version-recovery process being part of the backup andrecovery method, in accordance with the first embodiment of the presentinvention. Referring to FIG. 4, the version-recovery process is executedwhen a read command sent by a server system 102 for a file is receivedby the backup storage file system 202. The read command might beadjusted to include the version of the file that is to be read. If theread command does not include a version number, the latest and mostactual version is referenced.

In an alternate embodiment a file attribute can be used to denote theversion of the file to be retrieved, instead of modifying the readcommand. In this case the file attribute is checked by the backupstorage file system 202 when the read-command is received and the properversion is retrieved from the proper file repository according to theversion-recovery process. The version-recovery process is beingdescribed with reference to FIGS. 2 and 4. In step 402, controller 206receives a file read command via interface 204 from a server system 102.The file read command might be adjusted to include the version of thefile that is to be read.

In the next step S404, controller 206 checks which version number of thefile is to be read. If no version number is being given, the defaultvalue will be used which is the first file version, meaning the latestsaved one in the first file repository 210. In an alternate embodiment afile attribute can be used to denote the version of the file to beretrieved instead of modifying the read command. In this case the fileattribute previously set by the server 102 is checked in step S404 andthe version is determined. After determining the file version numberthat is to be restored, controller 206 will query the file repository210, 212, 214, which should have this file version, in step S406. If therequested file version does not exist within that file repository 210,212, 214, the controller 206 moves from step S408 to step S420 andreports a file read error to the server system 102. If the requestedfile exists, then the controller 206 moves from step S408 to step S410and reads the file version from the determined file repository 210, 212,214 and send the read file version to the requesting server system 102via the interface 204 and the network 108.

The version-recovery process allows recovering an existing version of afile. The workload associated with the recovery process is only presentfor that part of the file repository 210, 212, 214 which has therequested version of the file(s).

FIG. 5 shows a differential version-movement process being part of abackup and recovery method, in accordance with a second embodiment ofthe present invention; and FIGS. 6 and 7 show a differentialversion-recovery process being part of the backup and recovery method,in accordance with the second embodiment of the present invention. Thedifferential version-movement process is being described with specialreference to FIGS. 5, 6 and 7.

As typically files are not completely changed between versions butmostly only slightly modified it makes sense to store only thedifferences for the different versions and point to the original data.Therefore controller 206 shall incorporate a differential analysisalgorithm to discover changes between files. Said algorithm might usebinary differences or content-orientated methods, i.e. text fileschecking, etc.

In step S502, a file write operation with a new version of a file to bewritten is received from the at least one server system 102 or apreceding file repository 210, 212. In step S504, it is determined if aversion of the file to be written already exists in a corresponding filerepository 210, 212, 214. If a version of the file to be written alreadyexists in the file repository 210, 212, 214 versioning policies areverified in step S506. In step S508, data content of the new version ofthe file to be written is compared with the existing version of the fileto be written. Then differing data blocks are determined in step S510.In step S512, it is determined, if the versioning policies indicate ahigher number of versions to be saved than a position number of thecorresponding file repository 210, 212, 214. If the versioning policiesindicate a higher number of versions to be saved than a position numberof the file repository 210, 212, 214 the differing data blocks in theexisting file version from the repository 210, 212 are moved to asubsequent file repository 212, 214 in step S514; otherwise thediffering data blocks in the existing file version in the filerepository 210, 212, 214 are deleted in step S516. In step S520 thediffering data blocks of the new version of the file to be written fromthe at least one server system 102 or a preceding file repository 210,212 are written in the file repository 210, 212, 214. If no version ofthe file to be written exists in the corresponding file repository 210,212, 214, the new version of the file to be written is written in thecorresponding file repository 210, 212, 214 in step S530.

Once the file movement operations are done and the file has been writtento the first file repository 210, the controller 206 checks andinitiated additional functionality like deduplication or indexing in thefile repositories 210, 212 and 214 in step S540, which ends the activefile write process. The process according to step S502 to S540 isperformed for every file repository 210, 212, 214 of the backup storagefile system 202.

In other words the controller 206 will calculate the difference betweenthe new version of the file to be written and all previous versions.Upon that only the differences between the new file version and theolder versions will be moved. The difference relates to data blocks orfixed or variable files that are composing the file. Obviously the copywill have a pointer to the original file to put the file back together.Thus at the end of this process different segments of a file are storedin different file repositories 210, 212, 214 and it is tracked whichdata blocks in which repository match which version of the file.

Referring to FIGS. 6 and 7, in step S602, controller 206 receives a fileread command via interface 204 from a server system 102. The file readcommand might be adjusted to include the version of the file that is tobe read. In the next step S604, controller 206 checks which versionnumber of the file is to be read. If no version number is being given,the default value will be used which is the first file version, meaningthe latest saved one in the first file repository 210. In an alternateembodiment a file attribute can be used to denote the version of thefile to be retrieved, instead of modifying the read command. In thiscase the file attributes previously set by the server 102 is checked instep S604 and the version is determined. After determining the fileversion number that is to be restored, controller 206 will query thefile repository 210, 212, 214, which should have this file version, instep S606. If the requested file version does not exist within that filerepository 210, 212, 214, the controller 206 moves from step S608 tostep S640 and reports a file read error to the server system 102. If therequested file exists, then the controller 206 moves from step S608 tostep S610 and determines if the requested file version is the mostrecent version of the file to be read. If the most recent file versionis requested, the file of the first file repository 210 is read and sentas requested version of the file to be read to the requesting serversystem 102 via the interface 204 and the network 108 in step S620.

If another file version than the most recent one is requested, thecontroller 206 moves to step S622 and reads content of each filerepository 210, 212, 214, whose position number is less or equal to therequested version number of the file to be read. In step S624, thecontroller 206 replaces different data blocks of more recent versions ofthe file to be read with different data blocks from older versions ofthe file to be read to create the requested version of the file to beread. In step S626, the controller 206 sends the recreated version asrequested version of the file to be read to the requesting server system102 via the interface 204 and the network 108.

This will lower the amount of data being transferred and enhances readperformance, because the most of the data will reside on the first filerepository, which will typically be the most active because it storesthe most recent version of each file.

One further enhancement of the differential version-movement processmight be to make the algorithm even more intelligent to discover themost common version from which the differences should be calculated. Forexample, version “2” of a file might be more similar to all other fileversions than version “1”.

Embodiment of the present inventive can be entirely implemented as asoftware embodiment, or an embodiment containing both hardware andsoftware elements. In a preferred embodiment, the present invention isimplemented in software, which includes but is not limited to firmware,resident software, microcode, etc.

Furthermore, the present invention can take the form of a computerprogram product accessible from a computer-usable or computer-readablemedium providing program code for use by or in connection with acomputer or any instruction execution system. For the purposes of thisdescription, a computer-usable or computer-readable medium can be anyapparatus that can contain, store, communicate, propagate, or transportthe program for use by or in connection with the instruction executionsystem, apparatus, or device.

The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), arigid magnetic disk, and an optical disk. Current examples of opticaldisks include compact disk-read only memory (CD-ROM), compactdisk-read/write (CD-R/W), DVD, and BD (Blu-Ray Disk). A data processingsystem suitable for storing and/or executing program code will includeat least one processor coupled directly or indirectly to memory elementsthrough a system bus. The memory elements can include local memoryemployed during actual execution of the program code, bulk storage, andcache memories which provide temporary storage of at least some programcode in order to reduce the number of times code must be retrieved frombulk storage during execution. Input/output or I/O devices (includingbut not limited to keyboards, displays, pointing devices, etc.) can becoupled to the system either directly or through intervening I/Ocontrollers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modems, SCSI, iSCSI (Internet SCSI), Ethernet,and Fibre-Channel over Ethernet (FCoE) cards are just a few of thecurrently available types of network adapters.

What is claimed is:
 1. A method for data backup and recovery based onlinked file repositories with each of the linked file repositoriesrepresenting an individual file system capable of storing at least oneversion of a file and being connected to at least one server system,wherein the method includes: placing each of the linked filerepositories in one of a plurality of positions for storing the at leastone version of the file; continuously numbering each of the plurality ofpositions of each of the linked file repositories; determining a numberof the at least one version of the file by the one of a plurality ofpositions of the one of the linked file repositories; and implementing aversion-recovery process over each of the linked file repositories toperform a read operation of the at least one version of the file.
 2. Themethod of claim 1, further including continuously numbering each of theplurality of positions of each of the linked file repositories beginningat a numerical value of 1, wherein a first one of the linked filerepositories is numbered as 1, and a first version of the at least oneversion of the file representing a most recent version of the file isstored.
 3. The method of claim 1, further including implementing theversion-recovery process by performing one of: receiving a writeoperation and a new one of the at least one version of the file to bewritten from one of the at least one server system and a preceding oneof the linked file repositories, determining if the new one of the atleast one version of the file to be written exists in the one of thelinked file repositories, if the new one of the at least one version ofthe file to be written exists in the one of the linked file repositoriesperforming one of: verifying versioning policies, moving an existing oneof the at least one version from the corresponding one of the linkedfile repositories to a subsequent one of the linked file repositories ifthe versioning policies indicate a higher number of the at least oneversion that are to be saved as compared to a position number of the oneof the linked file repositories, otherwise: deleting the existing one ofthe at least one version in the one of the linked file repositories, andstoring the new one of the at least one version of the file to bewritten from one of the at least one server system and the preceding oneof the linked file repositories, and if the new one of the at least oneversion of the file to be written does not exist in the one of thelinked file repositories: storing the new one of the at least oneversion of the file to be written from the one of the linked filerepositories.
 4. The method of claim 3, further including implementingthe version-recovery process by performing one of: receiving the readoperation and a version number of a requested version of the file to beread from the at least one server system, examining the version numberof the file to be read, and determining if the requested version of thefile to be read exists in one of the linked file repositories having aposition number matching the received version number, wherein if therequested version of the file to be read exists: reading and sending thefile to a requesting server system, otherwise indicating a fileread-error to the requesting server system if the requested version ofthe file to be read does not exist.
 5. The method of claim 1, furtherincluding implementing the version-recovery process on ablock-differential basis by performing one of: receiving a writeoperation with a new one of the at least one version of the file to bewritten from one of the at least one server system and a preceding oneof the linked file repositories, determining if the new one of the atleast one version of the file to be written exists in the one of thelinked file repositories, if the new one of the at least one version ofthe file to be written exists in the one of the linked file repositoriesperforming one of: comparing data of the new one of the at least oneversion of the file to be written and an existing one of the at leastone version of the of the file to be written, determining different datablocks, moving the different data blocks from the existing one of the atleast one version of the of the file to be written from the one of thelinked file repositories to a subsequent one of the linked filerepositories if versioning policies indicate a higher number of the atleast one version as compared to a position number of the one of thelinked file repositories, otherwise: deleting the different data blocksof the existing one of the at least one version in the one of the linkedfile repositories, and storing the different data blocks of the new oneof the at least one version of the file to be written from one of the atleast one server system and the preceding one of the linked filerepositories, and if the at least one version of the file to be writtendoes not exist in the one of the linked file repositories: storing thenew one of the at least one version of the file to be written from theone of the linked file repositories.
 6. The method of claim 5, furtherincluding implementing the version-recovery process on theblock-differential basis by performing one of: receiving a readoperation and a version number of a requested version of the file to beread from the at least one server system, examining the version numberof the file to be read; determining if the requested version of the fileto be read exists in one of the linked file repositories having theposition number matching the received version number, if the requestedversion of the file to be read exists, recreating the requested versionof the file to be read by determining if the requested version of thefile to be read is a most recent version of the at least one version ofthe file to be read, if the requested version of the file to be read isthe most recent version of the at least one version of the file to beread: reading and sending the most recent version of the at least oneversion of the file to be read from a first one of the linked filerepositories to a requesting server system, otherwise performing one of:reading content of the linked file repositories having the positionnumber that is one of less than and equal to the requested versionnumber of the at least one version of the file to be read, replacing thedifferent data blocks of the most recent version of the at least oneversion of the file to be read with the different data blocks of anolder version of the at least one version of the file, and sending arecreated version of the file to be read to the requesting serversystem, and indicating a file read-error to the requesting server systemif the requested version of the file does not exists.
 7. The method ofclaim 5, further including performing one of: including the versionnumber and a file name of the requested version of the file to be readas part of the read operation, and setting the version number of therequested version as a file attribute prior to the read operation. 8.The method of claim 7, wherein the requested version number is one of aninteger number, a date range, and a time range.
 9. The method of claim1, further including, for each of the linked file repositories,performing at least one function operation, wherein the at least onefunction operation includes at least one of a deduplication functionallowing deduplicating files based on the version number, an indexingfunction allowing to index the file and providing search and discoverycapabilities, and an expiration function for moved files determiningwhen a moved file expires and is being deleted time-based orevent-based.
 10. The method of claim 9, further including performing theat least one function operation for each file stored in the linked filerepositories.
 11. The method of claim 9, further including performingthe at least one function operation for each file stored in each of thelinked file repositories matching at least one rule, wherein the atleast one rule includes a file extension matching a certain pattern, afile name matching one of a plurality of patterns, a file path namematching the one of a plurality of patterns, a file owner matching theone of a plurality of patterns, a file creation, and a modification orlast access time matching a specified date and a specified time range.12. An system for data backup and recovery based on linked filerepositories, wherein the system includes at least one of: at least oneserver system; the linked file repositories, wherein each of the linkedfile repositories representing an individual file system capable ofstoring at least one version of a file, and in communication with the atleast one server system; and at least one processor device, incommunication with each the linked file repositories and the at leastone server system, operable in the system, wherein the at least oneprocessor device: places each of the linked file repositories in one ofa plurality of positions for storing the at least one version of thefile, continuously numbers each of the plurality of positions of each ofthe linked file repositories, determines a number of the at least oneversion of the file by the one of a plurality of positions of the one ofthe linked file repositories, and implements a version-recovery processover each of the linked file repositories to perform a read operation ofthe at least one version of the file.
 13. The system of claim 12,wherein the at least one processor device continuously numbers each ofthe plurality of positions of each of the linked file repositoriesbeginning at a numerical value of 1, wherein a first one of the linkedfile repositories is numbered as 1, and a first version of the at leastone version of the file representing a most recent version of the fileis stored.
 14. The system of claim 12, wherein the at least oneprocessor device implements the version-recovery process by performingone of: receiving a write operation and a new one of the at least oneversion of the file to be written from one of the at least one serversystem and a preceding one of the linked file repositories, determiningif the new one of the at least one version of the file to be writtenexists in the one of the linked file repositories, if the new one of theat least one version of the file to be written exists in the one of thelinked file repositories performing one of: verifying versioningpolicies, moving an existing one of the at least one version from thecorresponding one of the linked file repositories to a subsequent one ofthe linked file repositories if the versioning policies indicate ahigher number of the at least one version that are to be saved ascompared to a position number of the one of the linked filerepositories, otherwise: deleting the existing one of the at least oneversion in the one of the linked file repositories, and storing the newone of the at least one version of the file to be written from one ofthe at least one server system and the preceding one of the linked filerepositories, and if the new one of the at least one version of the fileto be written does not exist in the one of the linked file repositories:storing the new one of the at least one version of the file to bewritten from the one of the linked file repositories.
 15. The system ofclaim 14, wherein the at least one processor device implements theversion recovery process by performing one of: receiving the readoperation and a version number of a requested version of the file to beread from the at least one server system, examining the version numberof the file to be read, and determining if the requested version of thefile to be read exists in one of the linked file repositories having aposition number matching the received version number, wherein if therequested version of the file to be read exists: reading and sending thefile to a requesting server system, otherwise indicating a fileread-error to the requesting server system if the requested version ofthe file to be read does not exist.
 16. The system of claim 12, whereinthe at least one processor device implements the version-recoveryprocess on a block-differential basis by performing one of: receiving awrite operation with a new one of the at least one version of the fileto be written from one of the at least one server system and a precedingone of the linked file repositories, determining if the new one of theat least one version of the file to be written exists in the one of thelinked file repositories, if the new one of the at least one version ofthe file to be written exists in the one of the linked file repositoriesperforming one of: comparing data of the new one of the at least oneversion of the file to be written and an existing one of the at leastone version of the of the file to be written, determining different datablocks, moving the different data blocks from the existing one of the atleast one version of the of the file to be written from the one of thelinked file repositories to a subsequent one of the linked filerepositories if versioning policies indicate a higher number of the atleast one version as compared to a position number of the one of thelinked file repositories, otherwise: deleting the different data blocksof the existing one of the at least one version in the one of the linkedfile repositories, and storing the different data blocks of the new oneof the at least one version of the file to be written from one of the atleast one server system and the preceding one of the linked filerepositories, and if the at least one version of the file to be writtendoes not exist in the one of the linked file repositories: storing thenew one of the at least one version of the file to be written from theone of the linked file repositories.
 17. The system of claim 16, whereinthe at least one processor device implements the version-recoveryprocess on the block-differential basis by performing one of: receivinga read operation and a version number of a requested version of the fileto be read from the at least one server system, examining the versionnumber of the file to be read, determining if the requested version ofthe file to be read exists in one of the linked file repositories havingthe position number matching the received version number, if therequested version of the file to be read exists, recreating therequested version of the file to be read by determining if the requestedversion of the file to be read is a most recent version of the at leastone version of the file to be read, if the requested version of the fileto be read is the most recent version of the at least one version of thefile to be read, reading and sending the most recent version of the atleast one version of the file to be read from a first one of the linkedfile repositories to a requesting server system, otherwise performingone of: reading content of the linked file repositories having theposition number that is one of less than and equal to the requestedversion number of the at least one version of the file to be read,replacing the different data blocks of the most recent version of the atleast one version of the file to be read with the different data blocksof an older version of the at least one version of the file, and sendinga recreated version of the file to be read to the requesting serversystem, and indicating a file read-error to the requesting server systemif the requested version of the file does not exists.
 18. The system ofclaim 16, wherein the at least one processor device performs one of:including the version number and a file name of the requested version ofthe file to be read as part of the read operation, wherein the requestedversion number is one of an integer number, a date range, and a timerange, and setting the version number of the requested version as a fileattribute prior to the read operation.
 19. The system of claim 12,wherein the at least one processor device, for each of the linked filerepositories, performs at least one function operation, wherein the atleast one function operation includes at least one of a deduplicationfunction allowing deduplicating files based on the version number, anindexing function allowing to index the file and providing search anddiscovery capabilities, and an expiration function for moved filesdetermining when a moved file expires and is being deleted time-based orevent-based.
 20. The system of claim 19, wherein the at least oneprocessor device: performs the at least one function operation for eachfile stored in the linked file repositories, and performs the at leastone function operation for each file stored in each of the linked filerepositories matching at least one rule, wherein the at least one ruleincludes a file extension matching a certain pattern, a file namematching one of a plurality of patterns, a file path name matching theone of a plurality of patterns, a file owner matching the one of aplurality of patterns, a file creation, and a modification or lastaccess time matching a specified date and a specified time range.
 21. Acomputer program product of data backup and recovery based on linkedfile repositories with each of the linked file repositories representingan individual file system capable of storing at least one version of afile and being connected to at least one server system, the computerprogram product comprising a non-transitory computer-readable storagemedium having computer-readable program code portions stored therein,the computer-readable program code portions comprising: a firstexecutable portion that places each of the linked file repositories inone of a plurality of positions for storing the at least one version ofthe file; a second executable portion that continuously numbers each ofthe plurality of positions of each of the linked file repositories; athird executable portion that determines a number of the at least oneversion of the file by the one of a plurality of positions of the one ofthe linked file repositories; and a fourth executable portion thatimplements a version-movement process over each of the linked filerepositories to perform a read operation of the at least one version ofthe file.
 22. The computer program product of claim 21, furtherincluding a fifth executable portion that continuously numbers each ofthe plurality of positions of each of the linked file repositoriesbeginning at a numerical value of 1, wherein a first one of the linkedfile repositories is numbered as 1, and a first version of the at leastone version of the file representing a most recent version of the fileis stored.
 23. The computer program product of claim 21, furtherincluding a fifth executable portion that implements theversion-recovery process by performing one of: receiving a writeoperation and a new one of the at least one version of the file to bewritten from one of the at least one server system and a preceding oneof the linked file repositories, determining if the new one of the atleast one version of the file to be written exists in the one of thelinked file repositories, if the new one of the at least one version ofthe file to be written exists in the one of the linked file repositoriesperforming one of: verifying versioning policies, moving an existing oneof the at least one version from the corresponding one of the linkedfile repositories to a subsequent one of the linked file repositories ifthe versioning policies indicate a higher number of the at least oneversion that are to be saved as compared to a position number of the oneof the linked file repositories, otherwise: deleting the existing one ofthe at least one version in the one of the linked file repositories, andstoring the new one of the at least one version of the file to bewritten from one of the at least one server system and the preceding oneof the linked file repositories, and if the new one of the at least oneversion of the file to be written does not exist in the one of thelinked file repositories: storing the new one of the at least oneversion of the file to be written from the one of the linked filerepositories.
 24. The computer program product of claim 23, furtherincluding a sixth executable portion that implements the versionrecovery process by performing one of: receiving the read operation anda version number of a requested version of the file to be read from theat least one server system, examining the version number of the file tobe read, determining if the requested version of the file to be readexists in one of the linked file repositories having a position numbermatching the received version number, wherein if the requested versionof the file to be read exists: reading and sending the file to arequesting server system, otherwise indicating a file read-error to therequesting server system if the requested version of the file to be readdoes not exist.
 25. The computer program product of claim 21, furtherincluding a fifth executable portion that implements theversion-recovery process on a block-differential basis by performing oneof: receiving a write operation with a new one of the at least oneversion of the file to be written from one of the at least one serversystem and a preceding one of the linked file repositories, determiningif the new one of the at least one version of the file to be writtenexists in the one of the linked file repositories, if the new one of theat least one version of the file to be written exists in the one of thelinked file repositories performing one of: comparing data of the newone of the at least one version of the file to be written and anexisting one of the at least one version of the of the file to bewritten, determining different data blocks, moving the different datablocks from the existing one of the at least one version of the of thefile to be written from the one of the linked file repositories to asubsequent one of the linked file repositories if versioning policiesindicate a higher number of the at least one version as compared to aposition number of the one of the linked file repositories, otherwise:deleting the different data blocks of the existing one of the at leastone version in the one of the linked file repositories, and storing thedifferent data blocks of the new one of the at least one version of thefile to be written from one of the at least one server system and thepreceding one of the linked file repositories, and if the at least oneversion of the file to be written does not exist in the one of thelinked file repositories: storing the new one of the at least oneversion of the file to be written from the one of the linked filerepositories.
 26. The computer program product of claim 25, furtherincluding a sixth executable portion that implements theversion-recovery process on the block-differential basis by performingone of: receiving a read operation and a version number of a requestedversion of the file to be read from the at least one server system,examining the version number of the file to be read, determining if therequested version of the file to be read exists in one of the linkedfile repositories having the position number matching the receivedversion number, if the requested version of the file to be read exists,recreating the requested version of the file to be read by determiningif the requested version of the file to be read is a most recent versionof the at least one version of the file to be read, if the requestedversion of the file to be read is the most recent version of the atleast one version of the file to be read, reading and sending the mostrecent version of the at least one version of the file to be read from afirst one of the linked file repositories to a requesting server system,otherwise performing one of: reading content of the linked filerepositories having the position number that is one of less than andequal to the requested version number of the at least one version of thefile to be read, replacing the different data blocks of the most recentversion of the at least one version of the file to be read with thedifferent data blocks of an older version of the at least one version ofthe file, and sending a recreated version of the file to be read to therequesting server system, and indicating a file read-error to therequesting server system if the requested version of the file does notexists.
 27. The computer program product of claim 25, further includinga sixth executable portion that performs one of: including the versionnumber and a file name of the requested version of the file to be readas part of the read operation, wherein the requested version number isone of an integer number, a date range, and a time range, and settingthe version number of the requested version as a file attribute prior tothe read operation.
 28. The computer program product of claim 21,further including a fifth executable portion that, for each of thelinked file repositories, performs at least one function operation,wherein the at least one function operation includes at least one of adeduplication function allowing deduplicating files based on the versionnumber, an indexing function allowing to index the file and providingsearch and discovery capabilities, and an expiration function for movedfiles determining when a moved file expires and is being deletedtime-based or event-based.
 29. The computer program product of claim 28,further including a sixth executable portion that: performs the at leastone function operation for each file stored in the linked filerepositories, and performs the at least one function operation for eachfile stored in each of the linked file repositories matching at leastone rule, wherein the at least one rule includes a file extensionmatching a certain pattern, a file name matching one of a plurality ofpatterns, a file path name matching the one of a plurality of patterns,a file owner matching the one of a plurality of patterns, a filecreation, and a modification or last access time matching a specifieddate and a specified time range.